#序列类型
# 列表（可变序列）
lst = [1, 2, 2, 3]
lst[0] = 0  # 允许修改

# 元组（不可变序列）
tpl = (1, 2, 2, 3)
# tpl[0] = 0  # 报错（不可修改）

# 字符串（不可变序列）
s = "abcab"
print(s[2])  # 输出 'c'（通过索引访问）

print("-----------------------")

#集合类型
# 可变集合（set）
s = {1, 2, 2, 3}  # 自动去重为 {1, 2, 3}
s.add(4)  # 允许添加元素
print(2 in s)  # 输出 True（快速判断元素是否存在）

# 不可变集合（frozenset）
fs = frozenset({1, 2, 3})
# fs.add(4)  # 报错（不可修改）

# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a & b)  # 交集 {3}

print("-----------------------")

#映射类型
# 字典（dict）
person = {
    "name": "Alice",  # 键 "name" 对应值 "Alice"
    "age": 30,
    "hobbies": ["reading", "sports"]  # 值可以是任意类型
}
print(person["name"])  # 通过键访问值，输出 "Alice"

# 键必须不可变（以下代码报错）
# invalid_dict = {[1, 2]: "value"}  # 列表是可变类型，不能作为键

# 键重复时，后定义的覆盖前一个
duplicate_keys = {"a": 1, "a": 2}
print(duplicate_keys)  # 输出 {"a": 2}